{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensorflow version: 2.0.0-alpha0\n"
     ]
    }
   ],
   "source": [
    "print('Tensorflow version: {}'.format(tf.__version__))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow import keras\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "fashion_mnist = keras.datasets.fashion_mnist\n",
    "\n",
    "(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_images = train_images / 255.0\n",
    "\n",
    "test_images = test_images / 255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "input1 = keras.Input(shape=(28, 28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "input2 = keras.Input(shape=(28, 28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1 = keras.layers.Flatten()(input1)\n",
    "x2 = keras.layers.Flatten()(input2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = keras.layers.concatenate([x1, x2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = keras.layers.Dense(32, activation='relu')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "output = keras.layers.Dense(1, activation='sigmoid')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.Model(inputs=[input1, input2], outputs=output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model_1\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_2 (InputLayer)            [(None, 28, 28)]     0                                            \n",
      "__________________________________________________________________________________________________\n",
      "input_3 (InputLayer)            [(None, 28, 28)]     0                                            \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 784)          0           input_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten_2 (Flatten)             (None, 784)          0           input_3[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "concatenate (Concatenate)       (None, 1568)         0           flatten_1[0][0]                  \n",
      "                                                                 flatten_2[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "dense_3 (Dense)                 (None, 32)           50208       concatenate[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "dense_4 (Dense)                 (None, 1)            33          dense_3[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 50,241\n",
      "Trainable params: 50,241\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = keras.layers.Dense(32, activation='relu')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = keras.layers.Dropout(0.5)(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = keras.layers.Dense(64, activation='relu')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "output = keras.layers.Dense(10, activation='softmax')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.Model(inputs=input, outputs=output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         [(None, 28, 28)]          0         \n",
      "_________________________________________________________________\n",
      "flatten (Flatten)            (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 32)                25120     \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            (None, 32)                0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 64)                2112      \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 10)                650       \n",
      "=================================================================\n",
      "Total params: 27,882\n",
      "Trainable params: 27,882\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer='adam',\n",
    "              loss='sparse_categorical_crossentropy',\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/30\n",
      "60000/60000 [==============================] - 3s 45us/sample - loss: 0.8531 - accuracy: 0.6770 - val_loss: 0.5104 - val_accuracy: 0.8172\n",
      "Epoch 2/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.6511 - accuracy: 0.7580 - val_loss: 0.5345 - val_accuracy: 0.8104\n",
      "Epoch 3/30\n",
      "60000/60000 [==============================] - 2s 40us/sample - loss: 0.6023 - accuracy: 0.7747 - val_loss: 0.5178 - val_accuracy: 0.7978\n",
      "Epoch 4/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.5773 - accuracy: 0.7856 - val_loss: 0.5921 - val_accuracy: 0.7645\n",
      "Epoch 5/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.5647 - accuracy: 0.7915 - val_loss: 0.5017 - val_accuracy: 0.8119\n",
      "Epoch 6/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5492 - accuracy: 0.7974 - val_loss: 0.5410 - val_accuracy: 0.7993\n",
      "Epoch 7/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5440 - accuracy: 0.7990 - val_loss: 0.5238 - val_accuracy: 0.7945\n",
      "Epoch 8/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5347 - accuracy: 0.8018 - val_loss: 0.5531 - val_accuracy: 0.7765\n",
      "Epoch 9/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5355 - accuracy: 0.8010 - val_loss: 0.5912 - val_accuracy: 0.7669\n",
      "Epoch 10/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5232 - accuracy: 0.8055 - val_loss: 0.5932 - val_accuracy: 0.7789\n",
      "Epoch 11/30\n",
      "60000/60000 [==============================] - 2s 38us/sample - loss: 0.5182 - accuracy: 0.8084 - val_loss: 0.5153 - val_accuracy: 0.8035\n",
      "Epoch 12/30\n",
      "60000/60000 [==============================] - 2s 40us/sample - loss: 0.5140 - accuracy: 0.8094 - val_loss: 0.4897 - val_accuracy: 0.8215\n",
      "Epoch 13/30\n",
      "60000/60000 [==============================] - 2s 40us/sample - loss: 0.5150 - accuracy: 0.8106 - val_loss: 0.5330 - val_accuracy: 0.7992\n",
      "Epoch 14/30\n",
      "60000/60000 [==============================] - 2s 38us/sample - loss: 0.5056 - accuracy: 0.8121 - val_loss: 0.5223 - val_accuracy: 0.7951\n",
      "Epoch 15/30\n",
      "60000/60000 [==============================] - 2s 39us/sample - loss: 0.5073 - accuracy: 0.8132 - val_loss: 0.5037 - val_accuracy: 0.8082\n",
      "Epoch 16/30\n",
      "60000/60000 [==============================] - 2s 38us/sample - loss: 0.5053 - accuracy: 0.8129 - val_loss: 0.5365 - val_accuracy: 0.7981\n",
      "Epoch 17/30\n",
      "60000/60000 [==============================] - 2s 40us/sample - loss: 0.5020 - accuracy: 0.8160 - val_loss: 0.5388 - val_accuracy: 0.7967\n",
      "Epoch 18/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4961 - accuracy: 0.8170 - val_loss: 0.4993 - val_accuracy: 0.8237\n",
      "Epoch 19/30\n",
      "60000/60000 [==============================] - 3s 42us/sample - loss: 0.4945 - accuracy: 0.8176 - val_loss: 0.5362 - val_accuracy: 0.8020\n",
      "Epoch 20/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4930 - accuracy: 0.8182 - val_loss: 0.5142 - val_accuracy: 0.8115\n",
      "Epoch 21/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4896 - accuracy: 0.8194 - val_loss: 0.4775 - val_accuracy: 0.8276\n",
      "Epoch 22/30\n",
      "60000/60000 [==============================] - 3s 42us/sample - loss: 0.4881 - accuracy: 0.8189 - val_loss: 0.5260 - val_accuracy: 0.7969\n",
      "Epoch 23/30\n",
      "60000/60000 [==============================] - 3s 42us/sample - loss: 0.4889 - accuracy: 0.8195 - val_loss: 0.5776 - val_accuracy: 0.7780\n",
      "Epoch 24/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4808 - accuracy: 0.8219 - val_loss: 0.5775 - val_accuracy: 0.7881\n",
      "Epoch 25/30\n",
      "60000/60000 [==============================] - 3s 42us/sample - loss: 0.4811 - accuracy: 0.8240 - val_loss: 0.5506 - val_accuracy: 0.7943\n",
      "Epoch 26/30\n",
      "60000/60000 [==============================] - 2s 42us/sample - loss: 0.4754 - accuracy: 0.8245 - val_loss: 0.5156 - val_accuracy: 0.8099\n",
      "Epoch 27/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4810 - accuracy: 0.8227 - val_loss: 0.6026 - val_accuracy: 0.7651\n",
      "Epoch 28/30\n",
      "60000/60000 [==============================] - 2s 41us/sample - loss: 0.4737 - accuracy: 0.8257 - val_loss: 0.5631 - val_accuracy: 0.7921\n",
      "Epoch 29/30\n",
      "60000/60000 [==============================] - 3s 42us/sample - loss: 0.4789 - accuracy: 0.8233 - val_loss: 0.5744 - val_accuracy: 0.7812\n",
      "Epoch 30/30\n",
      "60000/60000 [==============================] - 3s 43us/sample - loss: 0.4797 - accuracy: 0.8238 - val_loss: 0.5155 - val_accuracy: 0.8229\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(train_images, \n",
    "                    train_labels, \n",
    "                    epochs=30, \n",
    "                    validation_data=(test_images, test_labels))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 29us/sample - loss: 0.3565 - accuracy: 0.8797\n"
     ]
    }
   ],
   "source": [
    "test_loss, test_acc = model.evaluate(test_images, test_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x20168291ba8>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch, history.history['loss'], 'r', label='loss')\n",
    "plt.plot(history.epoch, history.history['val_loss'], 'b--', label='val_loss')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2016831a048>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch, history.history['accuracy'], 'r')\n",
    "plt.plot(history.epoch, history.history['val_accuracy'], 'b--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
